﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace BeachRunner.Utility
{
    /// <summary>
    /// SpriteSet ist eine Klasse um ein Bild in mehrere Teilbilder aufzuteilen.
    /// Die Einteilung geschiet in Teilbereiche der Klasse Rectangle.
    /// 
    /// Autor: Mattis Hänel
    /// </summary>
    public class SpriteSet
    {
        /// <summary>
        /// Die zum SpriteSet gehörige Grafik.
        /// </summary>
        private Texture2D texture;
        /// <summary>
        /// Macht die zum SpriteSet gehörige Grafik zugänglich.
        /// </summary>
        public Texture2D Texture
        {
            get { return texture; }
        }

        /// <summary>
        /// Die Rectangles der Teilbereiche
        /// </summary>
        private Rectangle[] rectangles;
        public Rectangle[] Rect
        {
            get { return rectangles; }
        }

        /// <summary>
        /// Erstellt ein neus SpriteSet
        /// </summary>
        /// <param name="texture">Die zu verwendene Textur</param>
        /// <param name="frameWidth">Die Breite eines Teilbildes</param>
        /// <param name="frameHeight">Die Höhe eines Teilbildes</param>
        public SpriteSet(Texture2D texture, int frameWidth, int frameHeight)
        {
            this.texture = texture;

            int framesPerWidth = texture.Width / frameWidth;
            int framesPerHeight = texture.Height / frameHeight;

            rectangles = new Rectangle[framesPerWidth * framesPerHeight];
            int index = 0;
            for (int y = 0; y < framesPerHeight; y++)
            {
                for (int x = 0; x < framesPerWidth; x++)
                {
                    rectangles[index] = new Rectangle(x * frameWidth, y * frameHeight, frameWidth, frameHeight);
                    index++;
                }
            }
        }
    }
}
